/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.logica;

import co.com.going.modelo.Pais;
import co.com.going.persistencia.IDAOpais;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Olguita
 */
@Stateless
public class LogicaPais implements ILogicaPais {

    @EJB
    private IDAOpais iDAOpais;
    
    @Override
    public void crearPais(Pais pais) throws Exception {
        
        if(pais==null){
        
            throw new Exception("El Pais no tiene Informacion");
        
        }
        
        Pais objPais= iDAOpais.buscarPaisPorNombre(pais.getNombrePais());
        
        if(objPais!=null){
        
        
            throw new Exception("La Pais ya Existe");
        
        }
        
       Pais objPais2=iDAOpais.buscarPaisPorId(pais.getCodPais());
       
       if(objPais2!=null){
        
        
            throw new Exception("El codigo de la proporcionado ya se encuentraen Uso");
         
        }
        
        
        if(pais.getNombrePais()==null||pais.getNombrePais().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(pais.getCodPais()==null||pais.getCodPais()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar el Pais");
            
        }
         
                  
         iDAOpais.crearPais(pais);
        
    }

    @Override
    public void eliminarPais(Pais pais) throws Exception {
        
        if(pais==null){
        
            throw new Exception("El Pais no tiene Informacion");
        
        }
        
        Pais objPais= iDAOpais.buscarPaisPorNombre(pais.getNombrePais());
        
        if(objPais==null){
       
        
            throw new Exception("El Pais No Existe");
        
        }
        
        if(objPais.getCiudadList().size()>0){
            
            throw new Exception("El Pais Tiene ciudades Asociadas, Elimine primero las ciudades e intente nuevamente");
            
        }
               
        iDAOpais.eliminarPais(objPais);
        
    }

    @Override
    public void modificarPais(Pais pais) throws Exception {
        
        if(pais==null){
        
            throw new Exception("El Pais no tiene Informacion");
        
        }
        
        Pais objPais= iDAOpais.buscarPaisPorNombre(pais.getNombrePais());
        
        if(objPais!=null){
       
        
            throw new Exception("El Nombre del Pais ya Existe");
        
        }
        
        if(pais.getNombrePais()==null||pais.getNombrePais().equals("")){
            
            throw new Exception("El Nombre no puede ser Vacio");
            
        }
        
         if(pais.getCodPais()==null||pais.getCodPais()==0){
            
            throw new Exception("Debe de Proporcionarse un codigo para identificar el Pais");
            
        }
        
        iDAOpais.modificarPais(pais);
        
    }

    @Override
    public Pais buscarPaisPorNombre(String nombre) throws Exception {
        
        if(nombre==null||nombre.equals("")) {
           
           throw new Exception("Ingrese Un nombre Para realizar la busqueda");
           
       }
       
       return iDAOpais.buscarPaisPorNombre(nombre);
        
    }

    @Override
    public Pais buscarPaisPorId(Long IDpais) throws Exception {
        
       if(IDpais==null||IDpais==0) {
           
           throw new Exception("Ingrese Un ID Para realizar la busqueda");
           
       }
       
       return iDAOpais.buscarPaisPorId(IDpais);
        
    }

    @Override
    public List<Pais> paises() throws Exception {
        
        return iDAOpais.paises();
        
    }

    @Override
    public List<Pais> PaisesCBM() throws Exception {
        
        return iDAOpais.PaisesCBM();
        
    }
    
}
